#include <iostream>
#include <string>
using namespace std;

// 类模板与继承
template<typename T>
class Base
{
    T m;
};

// class Son : public Bass 错误，必须要知道父类中的 T 类型，才能继承给子类
class Son : public Base<int>
{

};

void test01()
{
    Son s1;
}


// 如果想灵活指定父类中的 T 类型，子类也需要变类模板
template<typename T1, typename T2>
class Son2 : public Base<T2>
{
public:
    Son2()
    {
        cout << "T1 的类型为：" << typeid(T1).name() << endl;
        cout << "T2 的类型为：" << typeid(T2).name() << endl;
    }
    T1 obj;
};

void test02()
{
    Son2<int, char>S2;
}


int main()
{
    test02();
    return 0;
}